// 事件系统
const event = require('events');
const http = require('http');
const url = require('url');
const fs = require('fs');
const myevent = new event();
function fn1(name){
    console.log('我是fn1');
}
function fn2(){
    console.log('我是fn2函数');
}
// 绑定事件,on方法绑定
myevent.on('hello',fn1);
myevent.once('hello',function(){
    console.log('hello方法的匿名回调函数')
});
// once方法绑定，只会被触发一次
myevent.once('world',fn2)
// 触发事件emit()
// setInterval(() => {
//     myevent.emit('hello')
//     myevent.off('hello',fn1)//解除hello事件绑定的fn1
//     myevent.emit('world')
//     myevent.removeAllListeners('e') //接触e事件绑定的所有函数
// }, 1000);
// 事件绑定的数量
// console.log(myevent.listenerCount('world'));
// 路由相关
const server = http.createServer((req,res)=>{
    res.setHeader("Content-Type","text/html;charset=utf-8");
    const pathObj = url.parse(req.url,true);
    if(pathObj.pathname === '/user'){
        res.end(req);
    }else if(pathObj.pathname === '/index'){
        res.end('我是主页');
    }else{
        res.end('404 Not Found');
    }
})
// 监听端口
server.listen(9999);
// 流数据stream，一种数据传输方式，在读取或者写入时，会把数据转换成多个64k数据块
// 创建一个65k大小的文件通过buffer
fs.writeFileSync('./65k.txt',Buffer.alloc(65*1024));
// 通过流读取
const rs = fs.createReadStream('./65k.txt');
// count记录读取的次数
let count = 0;
rs.on('data',chunk=>{
    count++;
    console.log('流数据正在读取。。。,当前第',+count+'次');
})
rs.on('end',function(){
    console.log('流读取完毕')
})
// 通过流复制
// const ws = fs.createWriteStream("./copyStream.txt");
// // 创建通道
// rs.pipe(ws);
// 请求方式get、post、put、delete